gusucode.com > VC++ 基于IE内核功能很齐全的浏览器(支持多标签)-源码程序 > VC++ 基于IE内核功能很齐全的浏览器(支持多标签)-源码程序/code/Explorer/CJComboBoxEx.cpp
// CJComboBoxEx.cpp : implementation file // Copyright ? 1998-1999 CodeJock.com, All Rights Reserved. // See ReadMe.txt for TERMS OF USE. // // Copied from MFC, Visual C++ 6, to extend functionality to Visual C++ 5 // users, with some ideas taken from Luis Barreira's article 'Classes for new // IE4 controls' http://www.codeguru.com/controls/ie4_controls_classes.shtml // ///////////////////////////////////////////////////////////////////////////// /**************************************************************************** * * $Date: 8/31/99 1:11a $ * $Revision: 5 $ * $Archive: /CodeJockey/CJLibrary/CJComboBoxEx.cpp $ * * $History: CJComboBoxEx.cpp $ * * ***************** Version 5 ***************** * User: Kirk Stowell Date: 8/31/99 Time: 1:11a * Updated in $/CodeJockey/CJLibrary * Updated copyright and contact information. * * ***************** Version 4 ***************** * User: Kirk Stowell Date: 8/29/99 Time: 9:14p * Updated in $/CodeJockey/CJLibrary * Added Unicode compliance, thanks to Barry Burton for his help with * this. * * * ***************** Version 2 ***************** * User: Kirk Stowell Date: 7/25/99 Time: 12:30a * Updated in $/CodeJockey/CJLibrary * * ***************** Version 1 ***************** * User: Kirk Stowell Date: 6/25/99 Time: 12:05p * Created in $/CodeJockey/CJLibrary * Copied from MFC, Visual C++ 6. Added to extend functionality to Visual * C++ 5 users. * ***************************************************************************/ ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "CJComboBoxEx.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCJComboBoxEx BOOL CCJComboBoxEx::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) { // initialize common controls #ifdef _VC_VERSION_5 INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(icex); icex.dwICC = ICC_USEREX_CLASSES; VERIFY(InitCommonControlsEx(&icex)); #else VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTL_USEREX_REG)); #endif CWnd* pWnd = this; return pWnd->Create(WC_COMBOBOXEX, NULL, dwStyle, rect, pParentWnd, nID); } int CCJComboBoxEx::DeleteItem(int iIndex) { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, CBEM_DELETEITEM, (WPARAM) iIndex, 0); } BOOL CCJComboBoxEx::GetItem(COMBOBOXEXITEM* pCBItem) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pCBItem != NULL); ASSERT(AfxIsValidAddress(pCBItem, sizeof(COMBOBOXEXITEM))); return (int) ::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM) pCBItem); } int CCJComboBoxEx::InsertItem(const COMBOBOXEXITEM* pCBItem) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pCBItem != NULL); ASSERT(AfxIsValidAddress(pCBItem, sizeof(COMBOBOXEXITEM), FALSE)); return (int) ::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM) pCBItem); } int CCJComboBoxEx::InsertItem(int iItem, UINT nStringID, int iIndent, int iImage, int iSelectedImage, UINT mask) { CString strItem; strItem.LoadString(nStringID); return InsertItem(iItem, strItem, iIndent, iImage, iSelectedImage, mask); } int CCJComboBoxEx::InsertItem(int iItem, LPCTSTR lpszItem, int iIndent, int iImage, int iSelectedImage, UINT mask) { COMBOBOXEXITEM cbItem; cbItem.mask = mask; cbItem.iItem = iItem; cbItem.pszText = const_cast<LPTSTR>(lpszItem); cbItem.iImage = iImage; cbItem.iSelectedImage = iSelectedImage; cbItem.iIndent = iIndent; return InsertItem(&cbItem); } BOOL CCJComboBoxEx::SetItem(const COMBOBOXEXITEM* pCBItem) { ASSERT(::IsWindow(m_hWnd)); ASSERT(pCBItem != NULL); ASSERT(AfxIsValidAddress(pCBItem, sizeof(COMBOBOXEXITEM), FALSE)); return (int) ::SendMessage(m_hWnd, CBEM_SETITEM, 0, (LPARAM) pCBItem); } CCJComboBoxEx::~CCJComboBoxEx() { DestroyWindow(); } ///////////////////////////////////////////////////////////////////////////// IMPLEMENT_DYNAMIC(CCJComboBoxEx, CComboBox) /////////////////////////////////////////////////////////////////////////////